CREATE PROCEDURE [dbo].[PDA_InsertHavalehRow]
    @Id NUMERIC(18, 0),
    @GoodsCode VARCHAR(17),
    @WarehouseCode VARCHAR(3),
    @Qty MONEY,
    @AutoCalcOverUnderRow BIT = 1
AS
BEGIN
    DECLARE @AutoId INT;

    IF EXISTS
    (
        SELECT 1
        FROM dbo.TmpHavaleh
        WHERE Id_Havaleh = @Id
              AND Sender = @WarehouseCode
              AND K_Code = @GoodsCode
              AND Link_Record = 0
    )
    BEGIN

        SET @AutoId =
        (
            SELECT TOP 1 AutoId FROM dbo.TmpHavaleh WHERE Id_Havaleh = @Id
        );
        UPDATE dbo.TmpHavaleh
        SET K_Qty1 = K_Qty1 + @Qty
        WHERE Id_Havaleh = @Id
              AND Sender = @WarehouseCode
              AND K_Code = @GoodsCode
              AND Link_Record = 0;

        IF (@AutoCalcOverUnderRow = 1)
        BEGIN
            EXEC dbo.PDA_CalcOverUnderRow @Id = @Id,         -- varchar(max)
                                          @AutoId = @AutoId, -- varchar(max)
                                          @isUpdate = 1;     -- bit
        END;
    END;
    ELSE
    BEGIN

        INSERT INTO dbo.TmpHavaleh
        (
            Id_Havaleh,
            Radif,
            Sender,
            Reciver,
            K_Code,
            R_Unit1_2,
            Exp_Flag,
            Point_Flag,
            Price_Omdeh,
            Serial_Flag,
            Make_Flag,
            Hamrah_Flag,
            Price_KHarid,
            Price_Forosh,
            K_Qty1,
            CtrMojodi,
            Cooperative_Flag,
            Takhfif_Flag,
            K_Qty2,
            Price_Consumer,
            Price_Finish
        )
        (SELECT @Id,
                1,
                @WarehouseCode,
                '10000',
                @GoodsCode,
                K.R_Unit1_2,
                K.Exp_Flag,
                K.Point_Flag,
                A.Price_Omdeh,
                K.Serial_flag,
                K.Make_Flag,
                K.Hamrah_Flag,
                A.Price_Kharid,
                A.Price_Forosh,
                @Qty,
                K.CtrMojodi,
                ISNULL(K.LatinOrIr,0),
                K.Duty_Flag,
                1,
                CASE
                    WHEN ISNULL(A.Price_Consumer, 0) = 0 THEN
                        A.Price_Forosh
                    WHEN A.Price_Consumer < A.Price_Forosh THEN
                        A.Price_Forosh
                    ELSE
                        A.Price_Consumer
                END,
                A.Price_Finish
         FROM dbo.KalaId K
             LEFT JOIN dbo.Anbar A
                 ON A.A_Code = @WarehouseCode
                    AND A.K_Code = K.K_Code
         WHERE K.K_Code = @GoodsCode);
    END;
    SET @AutoId = @@IDENTITY;

    IF (@AutoCalcOverUnderRow = 1)
    BEGIN
        EXEC dbo.PDA_CalcOverUnderRow @Id = @Id,         -- varchar(max)
                                      @AutoId = @AutoId, -- varchar(max)
                                      @isUpdate = 0;     -- bit

    END;
END;

